import { makeAutoObservable, runInAction } from 'mobx';
import { RootStore } from './index';
// import { apiRequest } from '../utils/apiRequest';

export interface LoginData {
  email: string;
  password: string;
}

export interface RegisterData {
  email: string;
  password: string;
  confirmPassword: string;
  username: string;
}

export interface User {
  id: string;
  email: string;
  username: string;
  avatar?: string;
  createdAt: string;
}

export class AuthStore {
  rootStore: RootStore;
  user: User | null = null;
  isAuthenticated = false;
  isLoading = false;
  error: string | null = null;

  constructor(rootStore: RootStore) {
    this.rootStore = rootStore;
    makeAutoObservable(this);
  }

  setUser(user: User | null) {
    this.user = user;
    this.isAuthenticated = !!user;
  }

  setLoading(loading: boolean) {
    this.isLoading = loading;
  }

  setError(error: string | null) {
    this.error = error;
  }

  async login(data: LoginData) {
    this.setLoading(true);
    this.setError(null);

    try {
      // const response = await apiRequest('/auth/login', {
      //   method: 'POST',
      //   body: JSON.stringify(data),
      // });
      // if (response.success) {
      //   runInAction(() => {
      //     this.setUser(response.data.user);
      //   });
      //   return { success: true };
      // } else {
      //   runInAction(() => {
      //     this.setError(response.message || '登录失败');
      //   });
      //   return { success: false, message: response.message };
      // }
    } catch (error) {
      runInAction(() => {
        this.setError('网络错误，请稍后重试');
      });
      return { success: false, message: '网络错误' };
    } finally {
      this.setLoading(false);
    }
  }

  async register(data: RegisterData) {
    this.setLoading(true);
    this.setError(null);

    // try {
    //   const response = await apiRequest('/auth/register', {
    //     method: 'POST',
    //     body: JSON.stringify(data),
    //   });

    //   if (response.success) {
    //     runInAction(() => {
    //       this.setUser(response.data.user);
    //     });
    //     return { success: true };
    //   } else {
    //     runInAction(() => {
    //       this.setError(response.message || '注册失败');
    //     });
    //     return { success: false, message: response.message };
    //   }
    // } catch (error) {
    //   runInAction(() => {
    //     this.setError('网络错误，请稍后重试');
    //   });
    //   return { success: false, message: '网络错误' };
    // } finally {
    //   this.setLoading(false);
    // }
  }

  async forgotPassword(email: string) {
    this.setLoading(true);
    this.setError(null);

    // try {
    //   const response = await apiRequest('/auth/forgot-password', {
    //     method: 'POST',
    //     body: JSON.stringify({ email }),
    //   });

    //   if (response.success) {
    //     return { success: true, message: '重置密码邮件已发送' };
    //   } else {
    //     runInAction(() => {
    //       this.setError(response.message || '发送失败');
    //     });
    //     return { success: false, message: response.message };
    //   }
    // } catch (error) {
    //   runInAction(() => {
    //     this.setError('网络错误，请稍后重试');
    //   });
    //   return { success: false, message: '网络错误' };
    // } finally {
    //   this.setLoading(false);
    // }
  }

  async logout() {
    // try {
    //   await apiRequest('/auth/logout', {
    //     method: 'POST',
    //   });
    // } catch (error) {
    //   console.error('Logout error:', error);
    // } finally {
    //   runInAction(() => {
    //     this.setUser(null);
    //   });
    // }
  }

  async checkAuthStatus() {
    // try {
    //   const response = await apiRequest('/auth/me');
    //   if (response.success) {
    //     runInAction(() => {
    //       this.setUser(response.data.user);
    //     });
    //   }
    // } catch (error) {
    //   console.error('Auth check error:', error);
    // }
  }
}
